package kr.co.pension.utils.sms;

import java.rmi.RemoteException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import kr.co.pension.utils.ConstValue;
import kr.co.tongkni.webservice.ServiceSMSSoapProxy;

public class SMSUtil {
	

	String smsID = "";
	String hashValue = "";
	String hash_temp = "";
	String senderPhone = "";
	String receivePhone ="";
	String smsContent = "";
	String resultReturn = "";
	String reserveDate ="";
	String reserveTime = "";
	String userDefine = "";
	String callbackUrl = "";
	String searchValue = "";
	String mode = "";
	CEncrypt encrypt;
	
	public String send(String send, String recive, String msg) throws RemoteException {
		
		if(recive.indexOf("000")==0){
			return "-50";
		}
		
		ServiceSMSSoapProxy smsid = new ServiceSMSSoapProxy();
		smsID=  ConstValue.SMS_USR;
		hashValue = ConstValue.SMS_PWD;
		senderPhone =  send;
		receivePhone =  recive;
		smsContent =  msg;
		hash_temp = (smsID + hashValue + receivePhone); //아이디, 패스워드,수신번호를 hash화시킴

		encrypt = new CEncrypt("MD5", hash_temp);
		String sendSMS = smsid.sendSMS(smsID, encrypt.getEncryptData(), senderPhone, receivePhone, smsContent);

//		System.out.println("결과코드 : " + sendSMS);	
		return sendSMS;
	}
	
	public String sendSMSReserve(String send, String recive, String msg, String oreserveDate, String oreserveTime, String dfn) throws RemoteException {
		
		if(recive.indexOf("000")==0){
			return "-50";
		}
		ServiceSMSSoapProxy smsid = new ServiceSMSSoapProxy();
		smsID=  ConstValue.SMS_USR;
		hashValue = ConstValue.SMS_PWD;
		senderPhone =  send;
		receivePhone =  recive;
		smsContent =  msg;
		
		reserveDate =  oreserveDate;
		reserveTime =  oreserveTime;
		userDefine =  dfn;
		hash_temp = (smsID + hashValue + receivePhone); //아이디, 패스워드,수신번호를 hash화시킴

		encrypt = new CEncrypt("MD5", hash_temp);
		String sendSMSReserve = smsid.sendSMSReserve(smsID, encrypt.getEncryptData(), senderPhone, receivePhone, smsContent, reserveDate, reserveTime, userDefine);

//		System.out.println("결과코드 : " + sendSMS);	
		return sendSMSReserve;
	}
	
	public int cancelSMSReserve(String userDefine) throws RemoteException{
		ServiceSMSSoapProxy smsid = new ServiceSMSSoapProxy();
		smsID =  ConstValue.SMS_USR;
		hashValue =  ConstValue.SMS_PWD;
//		userDefine =  request.getParameter("userDefine");
		mode = "1";
		hash_temp = (smsID + hashValue + userDefine); //아이디, 패스워드,사용자정의값을 hash화시킴
		encrypt = new CEncrypt("MD5", hash_temp);
		int reserveCancle = smsid.reserveCancle(smsID, encrypt.getEncryptData(), userDefine, mode);
		return reserveCancle;
	}

	public String smsReturnMsg(String cd){
		
		if("1".equals(cd)){
			return "발송성공";
		}else if("0".equals(cd)){
			return "SMS발송 가능량 부족";
		}else if("-1".equals(cd)){
			return "SMS 아이디 /패스워드 이상";
		}else if("-2".equals(cd)){
			return "SMS 아이디 공백";
		}else if("-3".equals(cd)){
			return "다중 전송시 모두 실패(수신번호이상)";
		}else if("-4".equals(cd)){
			return "해쉬공백";
		}else if("-5".equals(cd)){
			return "해쉬이상";
		}else if("-8".equals(cd)){
			return "발신자 전화번호 공백";
		}else if("-9".equals(cd)){
			return "전송내용 공백";
		}else if("-10".equals(cd)){
			return "예약 날짜 이상";
		}else if("-11".equals(cd)){
			return "예약 시간 이상";
		}else if("-12".equals(cd)){
			return "예약 가능시간 지남";
		}else if("-13".equals(cd)){
			return "스팸 동의서가 접수되지 않음";
		}else if("-21".equals(cd)){
			return "데이타 베이스 이상";
		}else if("-50".equals(cd)){
			return "잘못된 전화번호";
		}
		//1 : 발송성공
		//1~N : 콤마로 연결하여 다중 발송을 하였을 경우에는 성공한 정수 숫자로 리턴됩니다.
		//0 : SMS발송 가능량 부족
		//-1 : SMS 아이디 /패스워드 이상
		//-2 : SMS 아이디 공백
		//-3 : 다중 전송시 모두 실패(수신번호이상)
		//-4 : 해쉬공백
		//-5 : 해쉬이상
		//-8: 발신자 전화번호 공백
		//-9: 전송내용 공백
		//-10: 예약 날짜 이상
		//-11: 예약 시간 이상
		//-12: 예약 가능시간 지남
		//-13: 스팸 동의서가 접수되지 않음
		//-21: 데이타 베이스 이상
		//-50: 잘못된 전화번호
		return "";
	}
	
}

